The present invention relates to a method for automatically releasing a dead lock state in a data processing system wherein a plurality of kinds of tasks commonly utilize a plurality of resources.
In the data processing system, especially in an on-line data processing system, a plurality of kinds of tasks commonly use a plurality of resources (hereinafter, sometimes called "blocks") in carrying out the data processing operation. In the conventional system, when one task is to use one resource, an occupation designation is specified for the resource by a conventional macro instruction such as "LOCK" or "ENQ" and the utilization of the resource by another task is inhibited. However, in such a case a so-called dead lock state may be caused for the following reason. That is, when one task X occupies or uses a resource A and, in this state, the task X is to occupy a resource B, if the resource B is occupied by another task Y, the task X is placed in a waiting state. On the other hand, when the task Y occupies the resource B and, in this state, the task Y is to occupy the resource A, the task Y is also placed in a waiting state. This phenomenon is called a "dead lock state".
Obviously the programming of the data processing system should be planned carefully and the debugging should be carried out so as to avoid the dead lock phenomenon. However, when the number of tasks which are to be processed in parallel increases, the dead lock phenomenon cannot be avoided, even if the programming of the data processing system is carefully planned and the debugging is thoroughly carried out.